package rdd01.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Join_Test {
  //combineByKey()算子测试：需要三个参数，
  //第一个是将相同key的第一个数据进行格式结构转换
  //第二个表示分区内的计算队则
  //第三个表示分区间的计算规则
  def main(args: Array[String]): Unit = {
    val sparkConf=new SparkConf().setMaster("local[*]").setAppName("combineByKey")
    val sparkcontext=new SparkContext(sparkConf)
    val rdd: RDD[(String, Int)] = sparkcontext.makeRDD(List(("a", 4), ("b", 5), ("c", 2)))
    val rdd1: RDD[(String, Int)] = sparkcontext.makeRDD(List(("a", 1), ("b", 5),("b",3)))
    val rddJoin: RDD[(String, (Int, Int))] = rdd.join(rdd1)
    rddJoin.collect().foreach(println)
    val letfOutJointest: RDD[(String, (Int, Option[Int]))] = rdd.leftOuterJoin(rdd1)
    letfOutJointest.collect().foreach(println)
    val rightOutJointest= rdd.rightOuterJoin(rdd1)
    rightOutJointest.collect().foreach(println)
    val cogroupTest: RDD[(String, (Iterable[Int], Iterable[Int]))] = rdd.cogroup(rdd1)
    cogroupTest.collect().foreach(println)
    sparkcontext.stop()

  }

}
